#include <bits/stdc++.h>
using namespace std;
using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;
const int N=1e6+5;

int main(){
    int N, M, L;
    cin >> N >> M >> L;
    vector<int> A(N + M + L);
    for (int i = 0; i < N + M + L; i++){
      cin >> A[i];
    }
    
    int S = N + M + L;
    vector<int> T(S + 1);
    T[0] = 1;
    for (int i = 0; i < S; i++){
      T[i + 1] = T[i] * 3;
    }
    auto get = [&](int x, int i){
      return x / T[i] % 3;
    };
    vector<vector<bool>> used(2, vector<bool>(T[S], false));
    vector<vector<bool>> dp(2, vector<bool>(T[S], false));
    auto dfs = [&](auto dfs, int t, int s) -> bool {
      if (!used[t][s]){
        for (int i = 0; i < S; i++){
          if (get(s, i) == t){
            int s2 = s - T[i] * t + T[i] * 2;
            if (!dfs(dfs, t ^ 1, s2)){
              dp[t][s] = true;
            }
            for (int j = 0; j < S; j++){
              if (A[j] < A[i] && get(s, j) == 2){
                int s3 = s2 - T[j] * 2 + T[j] * t;
                if (!dfs(dfs, t ^ 1, s3)){
                  dp[t][s] = true;
                }
              }
            }
          }
        }
        used[t][s] = true;
      }
      return dp[t][s];
    };
    int C = 0;
    for (int i = N; i < N + M; i++){
      C += T[i];
    }
    for (int i = N + M; i < S; i++){
      C += T[i] * 2;
    }
    if (dfs(dfs, 0, C)){
      cout << "Takahashi" << endl;
    } else {
      cout << "Aoki" << endl;
    }
  }
  // #include <bits/stdc++.h>
  // using namespace std;
  // using uint=unsigned int;
  // using ll=long long;
  // using ull=unsigned long long;
  // using i128=__int128;
  // const int N=1e6+5;
  
  // bool canwin(vector<int> own,vector<int> oppo,multiset<int> table,bool T){
  //     for(int card:own){
  //         multiset<int> newtable=table;
  //         newtable.insert(card);
  //         vector<int> newown=own;
  //         auto it=find(newown.begin(),newown.end(),card);
  //         newown.erase(it);
  //         vector<int> newoppo=oppo;
  //         auto smc=newtable.lower_bound(card);
  //         if(smc!=newtable.begin()){
  //             smc--;
  //             newown.push_back(*smc);
  //             newtable.erase(smc);
  //         }
  //         if(!canwin(newoppo,newown,newtable,!T)){
  //             return true;
  //         }
  //     }
  //     return false;
  // }
  
  // int main(){
  //     std::ios::sync_with_stdio(false);
  //     std::cin.tie(nullptr); std::cout.tie(nullptr);
  //     int n,m,l;
  //     cin>>n>>m>>l;
  //     vector<int> a(n),b(m),c(l);
  //     for(int i=0;i<n;i++)cin>>a[i];
  //     for(int i=0;i<m;i++)cin>>b[i];
  //     for(int i=0;i<l;i++)cin>>c[i];
  //     multiset<int> table(c.begin(),c.end());
  //     if(canwin(a,b,table,true))cout<<"Takahashi"<<endl;
  //     else cout<<"Aoki"<<endl;
  
  //     return 0;
  // }